﻿using System.Collections.Generic;

namespace Cms.Domain
{
    public class AdministratorGroup
    {
        private IList<Administrator> _administrators;
        private IList<Content> _allowedContent;
        private IList<Folder> _allowedFolders;
        private IList<MediaFile> _allowedMediaFiles;
        private IList<MediaFolder> _allowedMediaFolders;
        private IList<Page> _allowedPages;
        private IList<CustomAdminPage> _allowedCustomAdminPages;
        private IList<Content> _deniedContent;
        private IList<Folder> _deniedFolders;
        private IList<MediaFile> _deniedMediaFiles;
        private IList<MediaFolder> _deniedMediaFolders;
        private IList<Page> _deniedPages;
        private IList<CustomAdminPage> _deniedCustomAdminPages;
        private IList<Permission> _permissions;

        public AdministratorGroup()
        {
            _administrators = new List<Administrator>();
            _allowedPages = new List<Page>();
            _deniedPages = new List<Page>();
            _allowedCustomAdminPages = new List<CustomAdminPage>();
            _deniedCustomAdminPages = new List<CustomAdminPage>();
            _allowedFolders = new List<Folder>();
            _deniedFolders = new List<Folder>();
            _allowedMediaFolders = new List<MediaFolder>();
            _deniedMediaFolders = new List<MediaFolder>();
            _allowedMediaFiles = new List<MediaFile>();
            _deniedMediaFiles = new List<MediaFile>();
            _allowedContent = new List<Content>();
            _deniedContent = new List<Content>();
            _permissions = new List<Permission>();
        }

        public virtual int ID { get; set; }
        
        public virtual string Name { get; set; }

        public virtual DefaultAccess DefaultPageAccess { get; set; }

        public virtual DefaultAccess DefaultCustomAdminPageAccess { get; set; }

        public virtual IList<Page> AllowedPages
        {
            get { return _allowedPages; }
            set { _allowedPages = value; }
        }

        public virtual IList<Page> DeniedPages
        {
            get { return _deniedPages; }
            set { _deniedPages = value; }
        }

        public virtual IList<CustomAdminPage> AllowedCustomAdminPages
        {
            get { return _allowedCustomAdminPages; }
            set { _allowedCustomAdminPages = value; }
        }

        public virtual IList<CustomAdminPage> DeniedCustomAdminPages
        {
            get { return _deniedCustomAdminPages; }
            set { _deniedCustomAdminPages = value; }
        }

        public virtual IList<Folder> AllowedFolders
        {
            get { return _allowedFolders; }
            set { _allowedFolders = value; }
        }

        public virtual IList<Folder> DeniedFolders
        {
            get { return _deniedFolders; }
            set { _deniedFolders = value; }
        }
        
        public virtual IList<MediaFolder> AllowedMediaFolders
        {
            get { return _allowedMediaFolders; }
            set { _allowedMediaFolders = value; }
        }

        public virtual IList<MediaFolder> DeniedMediaFolders
        {
            get { return _deniedMediaFolders; }
            set { _deniedMediaFolders = value; }
        }
        
        public virtual IList<MediaFile> AllowedMediaFiles
        {
            get { return _allowedMediaFiles; }
            set { _allowedMediaFiles = value; }
        }
        
        public virtual IList<MediaFile> DeniedMediaFiles
        {
            get { return _deniedMediaFiles; }
            set { _deniedMediaFiles = value; }
        }

        public virtual IList<Content> AllowedContent
        {
            get { return _allowedContent; }
            set { _allowedContent = value; }
        }
        
        public virtual IList<Content> DeniedContent
        {
            get { return _deniedContent; }
            set { _deniedContent = value; }
        }
        
        public virtual IList<Administrator> Administrators
        {
            get { return _administrators; }
            set { _administrators = value; }
        }
        
        public virtual IList<Permission> Permissions
        {
            get { return _permissions; }
            set { _permissions = value; }
        }
    }
}